module hip.windowing.platforms.browser;

version(WebAssembly):
@nogc:

extern(C) void WasmSetWindowSize(int width, int height) @nogc;
extern(C) ubyte* WasmGetWindowSize() @nogc;

void openWindow(int width, int height, out void* WindowHandle)
{
    WasmSetWindowSize(width, height);
}
///Returns [width, height]
int[2] getWindowSize(void* WindowHandle, ref string[] errors)
{
    import core.memory;
    ubyte* intArray = WasmGetWindowSize();
    int[2] ret;
    size_t sz = *cast(size_t*)intArray;
    assert(sz == 2, "Wrong toDArray received.");
    int[] arr = cast(int[])intArray[size_t.sizeof..size_t.sizeof*(sz+1)];
    ret[] = arr[];
    GC.free(intArray);
    return ret;
}

void setWindowSize(int width, int height, void* WindowHandle, ref string[] errors)
{
    WasmSetWindowSize(width, height);
}

import hip.windowing.platforms.null_;
alias setWindowName = hip.windowing.platforms.null_.setWindowName;
alias setVsyncActive = hip.windowing.platforms.null_.setVsyncActive;
alias setFullscreen = hip.windowing.platforms.null_.setFullscreen;
alias initializeOpenGL = hip.windowing.platforms.null_.initializeOpenGL;
alias show = hip.windowing.platforms.null_.show;
alias poll = hip.windowing.platforms.null_.poll;
alias swapBuffer = hip.windowing.platforms.null_.swapBuffer;
alias destroy_GL_Context = hip.windowing.platforms.null_.destroy_GL_Context;